/* create our funky menu */
menu = gtk_menu_new ();
gtk_widget_set_name (menu, "gtk-combobox-popup-menu");
+ _gtk_menu_set_reserve_toggle_size (GTK_MENU (menu), FALSE);
g_signal_connect (menu, "key-press-event",
G_CALLBACK (gtk_combo_box_menu_key_press), combo_box);
if (gtk_tree_model_iter_has_child (model, &iter))
{
submenu = gtk_menu_new ();
+ _gtk_menu_set_reserve_toggle_size (GTK_MENU (submenu), FALSE);
gtk_widget_show (submenu);
gtk_menu_item_set_submenu (GTK_MENU_ITEM (item), submenu);
if (!menu)
{
menu = gtk_menu_new ();
+ _gtk_menu_set_reserve_toggle_size (GTK_MENU (menu), FALSE);
gtk_widget_show (menu);
gtk_menu_item_set_submenu (GTK_MENU_ITEM (parent), menu);
struct _GtkMenuPrivate
{
- gboolean seen_item_enter;
-
- gboolean have_position;
gint x;
gint y;
+ gboolean initially_pushed_in;
/* info used for the table */
guint *heights;
gint monitor_num;
/* Cached layout information */
- gboolean have_layout;
gint n_rows;
gint n_columns;
GtkStateType lower_arrow_state;
GtkStateType upper_arrow_state;
- gboolean ignore_button_release;
- gboolean initially_pushed_in;
+ guint have_layout : 1;
+ guint seen_item_enter : 1;
+ guint have_position : 1;
+ guint ignore_button_release : 1;
+ guint no_toggle_size : 1;
};
typedef struct
/* if the menu doesn't include any images or check items
* reserve the space so that all menus are consistent */
- if (max_toggle_size == 0)
+ if (max_toggle_size == 0 && !priv->no_toggle_size)
{
guint toggle_spacing;
guint indicator_size;
GtkRequisition requisition;
GtkMenuPrivate *private;
gint x, y;
+ gboolean initially_pushed_in;
gint scroll_offset;
gint menu_height;
GdkScreen *screen;
{
(* menu->position_func) (menu, &x, &y, &private->initially_pushed_in,
menu->position_func_data);
+
if (private->monitor_num < 0)
private->monitor_num = gdk_screen_get_monitor_at_point (screen, x, y);
}
}
+void
+_gtk_menu_set_reserve_toggle_size (GtkMenu *menu,
+ gboolean reserve)
+{
+ GtkMenuPrivate *priv = gtk_menu_get_private (menu);
+
+ priv->no_toggle_size = !reserve;
+}
+
#define __GTK_MENU_C__
#include "gtkaliasdef.c"